<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Pipeline &mdash; PowerShell fuer Systemintegratoren</title>
    
    <link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '1.0',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/translations.js"></script>
    <link rel="top" title="PowerShell fuer Systemintegratoren" href="../index.html" /> 
  </head>
  <body>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="Allgemeiner Index"
             accesskey="I">Index</a></li>
        <li><a href="../index.html">PS4SYS</a> &raquo;</li> 
      </ul>
    </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
            <p class="logo"><a href="../index.html">
              <img class="logo" src="../_static/PowerShell_icon_small.png" alt="Logo"/>
            </a></p>
  <h3>Diese Seite</h3>
  <ul class="this-page-menu">
    <li><a href="../_sources/aufgabe_rst/Aufgaben_PowerShell_Pipeline.txt"
           rel="nofollow">Quelltext anzeigen</a></li>
  </ul>
<div id="searchbox" style="display: none">
  <h3>Schnellsuche</h3>
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Los" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Geben Sie Suchbegriffe oder einen Modul-, Klassen- oder Funktionsnamen ein.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="pipeline">
<h1>Pipeline<a class="headerlink" href="#pipeline" title="Permalink zu dieser Überschrift">¶</a></h1>
<p>Lösungen sind hier <a class="reference internal" href="../Loesungen.html#loesung-powershell-pipeline"><em>Pipeline</em></a>:</p>
<ul>
<li><p class="first">You need a report of the top consumers of virtual memory and RAM on a server.</p>
</li>
<li><p class="first">You need a report of the largest files in a subtree.</p>
</li>
<li><p class="first">Die Ausgabe des folgenden Powershell-Befehls dauert u.U. sehr lange. Verbessern Sie das Statement im Hinblick auf die Ausführungsgeschwindigkeit</p>
<div class="highlight-sh"><div class="highlight"><pre><span class="c"># Foreach loop lists each element in a collection:</span>
    Foreach <span class="o">(</span><span class="nv">$element</span> in Dir C:<span class="se">\ </span>-recurse<span class="o">)</span> <span class="o">{</span> <span class="nv">$element</span>.name <span class="o">}</span>
</pre></div>
</div>
</li>
<li><p class="first">Welche Alias gibt es für das CmdLet get-process</p>
</li>
<li><p class="first">Welche Prozesse belegen mehr als 20 MByte</p>
</li>
<li><p class="first">Sortieren Sie das obige Ergebnis nach der Größe</p>
</li>
<li><p class="first">Geben Sie die Firma, den Produkt, Namen und Version der laufenden Prozesse aus</p>
</li>
<li><p class="first">Ermitteln Sie alle Word-Dateien im Verzeichnis h:Daten und seinen  Unterverzeichnissen. Beschränken Sie die Ergebnismenge auf diejenigen Objekte, bei denen das Attribut Length größer ist als 40 000 Bytes. Geben Sie lediglich die Attribute Name und Length aus und sortieren Sie die Ausgabe nach der Länge. Exportieren Sie  die Liste in eine .csv-Datei.</p>
</li>
<li><p class="first">Geben Sie alle Unterordner bis zu einer bestimmten Tiefe aus, ausgehend vom jeweils aktuellen Ordner</p>
</li>
<li><p class="first">Sie wollen prüfen, ob auf bestimmten Rechnern innerhalb ihres LANs Software bestimmter Herstellner vorhanden ist. Schreiben Sie ein entsprechendes Skript</p>
</li>
<li><p class="first">Erweitern Sie obiges Skript um die Abfrage nach bestimmten Softwarenamen bzw. Versionsständen.</p>
</li>
<li><p class="first">I needed to merge 365 CSV files that represent daily weather data sets into one CSV file that contains all the data accumulated during one year. Each of the daily CSV files had a header row. The yearly file should only have one. Filtering out rows is a perfect application of the PowerShell filter functions. Übersetzen Sie den anglischen Text sinngemäß und schreiben Sie ein entsprechendes Skript.</p>
</li>
<li><p class="first">Suchen Sie die letzten 2000 Systemereignisse des Eventlogs, die vom Typ &#8220;Error&#8221; sind</p>
</li>
<li><p class="first">Sie schreiben ein Powershell-Skript, welches eine eigene Ereignisquelle im Eventlog schafft und darunter seine Ereignisse schreibt.</p>
</li>
<li><p class="first">Schreiben Sie die Einträge der obigen Quelle in eine CSV-Datei. Es soll nur die jeweils letzte Stunde eingetragen werden</p>
</li>
<li><p class="first">A Real-life Example of Select-String</p>
<p>My practical problem was that I wanted to search for instances a particular string in a directory with hundreds of file.  If a file had duplicate entries, then I needed to know.</p>
<p>The PowerShell problem is how to create a stream of the files, then compare each file with my string value.  In the output I needed to know the filename.</p>
<p>To solve the problem, I employed four main commands, which you can see in the following script:</p>
</li>
<li><p class="first">Auflöung einer IP-Range in deren Namen</p>
<blockquote>
<div><p>Erstellen Sie ein Skript, welches eine vordefinierte IP-Range durchläuft und zu jeder IP-Adresse bei Erreichbarkeit den Rechnernamen ausgibt.</p>
<p>Versuchen Sie dabei mögliche Fehleingaben durch Programmierlogik abzufangen</p>
<p>Speichern Sie anschließend die Kombination von IP-Adresse und Rechnername in  einer CSV-Datei</p>
<p>Für die Implementierung können Sie folgende Funktionalität benutzen:</p>
<p>Test-Connection:
Cmdlet, welches die Erreichbarkeit eines Rechners zurückgibt</p>
<p>[System.Net.Dns]::GetHostbyAddress($IPAddress)
Funktionalität des .net-Frameworks, welches eine Namensauflösung für eine gegebene IP-Adresse vornimmt.</p>
</div></blockquote>
</li>
<li><p class="first">Laptop oder Desktop</p>
<blockquote>
<div><p>Sie sind die IT-Leiter einer kleinen mittelständischen Firma. Sie müssen Inventur machen und Sie brauchen dazu die Anzahl der zur Zeit sich im Netz befindlichen Laptop-und Desktop-Computer in ihrer Firma.</p>
<p>Um eine weitere Verarbeitung der Daten zu ermöglichen, sollte Sie den Computernamen, seine IP-Adresse, die Uhrzeit sowie die Aussage, ob es ein Laptop oder Desktop ist, speichern.</p>
<p>Sie planen folgende Vorgehensweise:</p>
<ul class="simple">
<li>Ihr Skript soll während des Login-Vorganges aufgerufen werden. Dies ist von Ihnen nicht zu programmieren.</li>
<li>Das Skript sucht eine Textdatei auf einem Netzlaufwerk und schreibt die entsprechenden Daten in die Datei
Es muss nicht darauf geachtet werden, dass evtl. ein gleichzeitiger Aufruf mehrer Clients möglich wäre.</li>
<li>Falls ihr Rechner in der Datei schon existiert, sollen die Daten    aktualisiert werden</li>
<li>Am Ende soll die Anzahl der Laptop- und Desktop-PC ermittelt und ausgegeben werden. Dies würde typischerweise in einem zweiten Skript stattfinden; sie können dies aber aus Vereinfachungsgründen auch in ihre vorhandene Lösung einbauen.</li>
</ul>
</div></blockquote>
</li>
<li><p class="first">Authentifizierung am Radius-Server</p>
<blockquote>
<div><p>Eine Schule plant, seinen Schülern einen definierten Gast-Zugang zum Internet mit eingeschränkten Rechten (http) per WLAN anzubieten. Dazu müssen die Access-Points mit den jeweiligen Login-Daten der Gäste versehen sein. Dies wird an den Access-Points mit Hilfe von Textdateien (CSV) realisiert, die den Usernamen, Passwort sowie das Datum der Erstellung beinhalten. Neue Gäste sollen jederzeit zu den bestehenden Gastzugängen hinzugefügt werden können. Diese müssen dann in die Textdatei aufgenommen werden; die Textdatei wird anschließend auf dem Accesspoint übeschrieben.</p>
<p>An den Login-Namen wird folgende Anforderung gestellt:
Erster Buchstabe des Vornamens + Nachname</p>
<p>Das Passwort hat folgenden Aufbau:</p>
<p>gast + 4 stellige Zufallszahl</p>
<p>Das Datum soll im Format dd.mm.yyyy in der Textdatei gespeichert werden</p>
<p>Zur ersten Befüllung der Textdatei hat der Systemadministrator eine Textdatei mit dem Vornamen und Nachnamen der Schüler aus dem Acitve Directory extrahiert.</p>
<p>Aufgabe:</p>
<p>Erstellen Sie die Textdatei für die Authentifizierung am Access-Point.</p>
</div></blockquote>
</li>
</ul>
</div>


          </div>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="Allgemeiner Index"
             >Index</a></li>
        <li><a href="../index.html">PS4SYS</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
        &copy; Copyright 2010, STE.
      Mit <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1 erstellt.
    </div>
  </body>
</html>